/// 调试播放列表解析
use std::sync::Arc;
use videoDownloader::{
    config::DownloadConfigBuilder,
    downloader::DownloaderFactory,
    progress::ProgressReporterFactory,
    retry::RetryStrategyFactory,
    playlist::Segment,  // 添加这个import
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("🧪 调试播放列表解析");
    
    // 测试URL
    let test_url = "https://vip.lz-cdn3.com/20220826/12057_20ebbfce/index.m3u8";
    
    // 创建HTTP客户端
    let config = DownloadConfigBuilder::new()
        .concurrent(4)
        .retry_count(3)
        .temp_dir("temp_debug".to_string())
        .build()?;
    
    let progress_reporter = ProgressReporterFactory::create_total_only_reporter();
    let retry_strategy = RetryStrategyFactory::exponential_backoff(config.retry_count, 1000);
    
    let downloader = DownloaderFactory::create_dual_progress_downloader(
        config,
        Arc::from(progress_reporter),
        retry_strategy,
    )?;
    
    // 下载播放列表
    println!("📥 下载播放列表: {}", test_url);
    let playlist = downloader.download_playlist(test_url).await?;
    
    // 打印播放列表信息
    println!("📋 播放列表信息:");
    println!("   基础URL: {}", playlist.base_url());
    println!("   分片数量: {}", playlist.segments().len());
    
    // 打印前几个分片信息
    for (i, segment) in playlist.segments().iter().take(5).enumerate() {
        println!("   分片 {}: {} (时长: {}s)", i, segment.url(), segment.duration());
    }
    
    // 验证分片URL是否正确
    if !playlist.segments().is_empty() {
        let first_segment = &playlist.segments()[0];
        println!("🔍 第一个分片URL: {}", first_segment.url());
        
        // 检查是否为相对路径
        if !first_segment.url().starts_with("http://") && !first_segment.url().starts_with("https://") {
            println!("⚠️  第一个分片URL是相对路径，可能解析不正确");
        }
    }
    
    Ok(())
}